package com.hkd.utils.config;

import org.redisson.Redisson;
import org.redisson.api.RedissonClient;
import org.redisson.config.Config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Lazy;

/**
 * @author HKD
 * @date 2022/9/12 10:22
 */
@Configuration
public class RedissonConfig {
    @Bean
    @Lazy
    public RedissonClient redissonClient() {
        Config config = new Config();
        config.useSingleServer()
//                .setDatabase(6)
                .setAddress("redis://HKD12138@101.43.79.97:6379")
                //连接空闲超时
                .setIdleConnectionTimeout(10000)
                .setPassword("HKD12138")
                //连接超时
                .setConnectTimeout(10000)
                //命令等待超时
                .setTimeout(3000)
                //命令失败重试次数,如果尝试达到 retryAttempts（命令失败重试次数） 仍然不能将命令发送至某个指定的节点时，将抛出错误。
                //如果尝试在此限制之内发送成功，则开始启用 timeout（命令等待超时） 计时。
                .setRetryAttempts(3)
                //命令重试发送时间间隔，单位：毫秒
                .setRetryInterval(1500)
                //单个连接最大订阅数量
                .setSubscriptionsPerConnection(5)
                //发布和订阅连接的最小空闲连接数
                .setSubscriptionConnectionMinimumIdleSize(1)
                //发布和订阅连接池大小
                .setSubscriptionConnectionPoolSize(25)
                //最小空闲连接数
                .setConnectionMinimumIdleSize(16)
                //连接池大小
                .setConnectionPoolSize(32)
                //DNS监测时间间隔，单位：毫秒
                .setDnsMonitoringInterval(5000);
        return Redisson.create(config);
    }
}
